package com.itcam.phaseii.static_;

public class StaticMethodDetail {
    public static void main(String[] args) {
        D.hi();//ok
        //非静态方法，不能通过类名调用
        //D.say();, 错误，需要先创建对象，再调用
        new D().say();//可以
    }
}

class D {
    private int n1 = 100;
    private static int n2 = 200;

    // 非静态方法
    public void say() {
        System.out.println("say Hello~");
    }

    // 静态方法 也称为类方法
    public static void hi() {
        // 静态方法不允许使用和对象有关的关键字
        // 比如this，super
//        System.out.println(this.n1);// error
        System.out.println("say hi~");
    }

    // 口诀：静态方法只能访问静态成员
    public static void hello() {
//        System.out.println(n1); // error
        System.out.println(n2);
//        System.out.println(this.n2); // error
//        say();// error
        hi();

    }

    // 非静态方法既可以访问静态成员又可以访问非静态成员
    public void ok() {
        // 非静态成员
        System.out.println(n1);
        say();
        // 静态成员
        System.out.println(n2);
        hello();
    }
}
